import unittest,os,time
from common.logs import logger
from common.sendEmail import SendEmail
from HTMLTestRunner_cn import HTMLTestRunner


pro_dir = os.path.dirname(__file__)

def create_suite():
    """
    获取测试套件
    :return:
    """
    case_dir = pro_dir + '/testCase/'
    suite = unittest.defaultTestLoader.discover(start_dir=case_dir,pattern='*Test.py',top_level_dir=None)
    logger.info(f"suite：{suite}")
    return suite

def auto_clear_report():
    '''
    自动清理旧报告
    :return:
    '''
    report_dir = pro_dir + '/report/'
    report_list = os.listdir(report_dir)
    logger.info(f"报告列表：{report_list}")
    #获取报告列表对应的报告创建时间列表
    time_list = []
    for i in report_list:
        file = report_dir + i
        time_list.append(os.path.getctime(file))
    logger.info(f"时间列表：{time_list}")
    #获取报告时间 对应相应报告的字典
    dict1 = {time_list[i]:report_list[i] for i in range(len(time_list))}
    logger.info(f'{dict1}')
    #对时间列表进行排序
    time_list.sort()
    logger.info(f"排序后的时间列表:{time_list}")
    #删除旧报告，保留最新的三份报告
    for i in range(len(time_list)-3):
        os.remove(report_dir + dict1[time_list[i]])
    logger.info('旧报告清理完成，保留最新的三份报告')



if __name__ == '__main__':
    report_dir = pro_dir + '/report/'
    report_name = time.strftime('%Y-%m-%d_%H-%M-%S',time.localtime()) + 'report.html'
    file = report_dir + report_name
    suite = create_suite()
    with open(file,'wb') as f:
        runner = HTMLTestRunner(stream=f,verbosity=1, title='AppiumUI自动化测试报告', description='AppiumUI自动化测试报告详情')
        runner.run(suite)
    #发送邮件
    se = SendEmail()
    se.sendEmail(file)
    # 自动清理旧报告
    auto_clear_report()
